Introduction:

At the United Nations' event celebrating the International Day of Happiness on March 20, 2012, the first World Happiness Report was released. TED talks, conferences, fields of study, and decades of research are dedicated to the question "What makes us happy?" The report aimed to answer that question through "happiness indicators". The researchers behind the report used data from the Gallup World Poll and answers to the Cantril ladder question (https://news.gallup.com/poll/122453/understanding-gallup-uses-cantril-scale.aspx), which are measurements of a respondent's imagined best (10) to worst (0) possible lives and where their lives fall on that scale. This score is broken into six factors: "economic production, social support, life expectancy, freedom, absence of corruption, and generosity".

The data was downloaded from https://worldhappiness.report/ed/2021/#appendices-and-data under the Data Panel and Mortality Data links. The Data Panel includes various years of happiness score data. In this analysis, we will examine transitions from 2018-2020. The Mortality Data includes further country metrics, some of which we use as confounders, and death metrics, including those related to covid. To download the pdf version of this document here.

I want to examine how scores change year over year. My questions are:

Which indicators are responsible for the largest changes in Happiness Score between 2018 and 2019?
How do happiness metrics effect excess deaths in 2020 per 100,000 population, relative to 2017-2019 average?

Methods:

I originally obtained this section of data from https://www.kaggle.com/unsdsn/world-happiness. I imported the data using fread() and used summary() to search for any missing values. The only missing value was in year1's Perceptions of corruption. I replaced that NA with year2's value, which is acceptable because a change (delta) of zero from year to year will not affect my question. However, it will allow me to use the other values for that location/row. Strangely, the same problem column was a different datatype in both years (char and dbl), so I cast them as doubles. After, I was able to merge the datasets and order them by Overall rank. Another category of missing values were countries that were specific subsets of scores. However, often these values were missing for both years under examination, so they were addressed in the same way.

Methods cont (EDA):

I examined the dimensions and base R summary statisics of the years dataset. Notably with a score of 7.632 in 2018, Finland has the number one spot for both years, and their perceived healthy life expectancy went up by ~.1 while their perceived freedom went down by ~.1. Also, Norway and Denmark swapped positions for 2nd and 3rd rank. On the opposite end of the spectrum, Burundi and South Sudan have the lowest happiness score at 2.905 and 2.853 respectively. The lowest six countries report subscores all below 1 point, and the Central African Republic has scores of 0 for social support for both years. One of the few other 0's was Afghanistan for freedom to make life choices.

Preliminary Results and EDA (more tools!):

The corrplot correlation matrix revealed the relationships between the subscores. Seeing these relationships are important for other questions and seeing the "status quo" of happiness indicators. That said, GDP per capita and Healthy Life expectancy were most highly correlated. I also looked at the shifting distributions of the subscores through histograms. Visually, the main changes were an increase in perceived corruption for the first quartile of countries (which means a lower score) and an increase in all countries' perceptions of Healthy life Expectancy. This is also reflected in their summary statistics. In boxplots, GDP seemed to increase, but only because the scale shifted. This was due to the absence of an outlier that was present in year1 but not year2- the United Arab Emirates' GDP score dropped from 2.096 to 1.684. This might indicate a change in how much happiness GDP per capita gives the citizens. Finally, the freedom subscore decreases and the perception of corruption score has the most outliers due to a majority of low values.

Histogram Visualizations

Life Ladder Score 2018 vs 2019

Healthy life expectancy 2018 vs 2019

Perceptions of corruption 2018 vs 2019

## {-}

Boxplot Outlier Visualizations

GDP per capita 2018 vs 2019

Freedom to make life choices 2018 vs 2019

Perceptions of corruption 2018 vs 2019

Scatter Plots

The first comparison scatter plot of healthy life expectancy doesn't show much change between years. The second scatter plot shows high dispersion within the Generosity vs Score plot. Each strata is clustered tightly within their y-value bands, but there is more variability in the x-axis.

Map Visualization Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average

Obviously many countries are missing death values. This may be due to difficulty with data collection in those regions or misreporting. This map shows the magnitude of the impact of 2020 (primarily covid) per capita. The map also has hover functionality to show happiness scores.

Map Visualization Life Ladder

This map color codes by life ladder happiness scores, while hovering to provide excess death numbers. This allows the user to examine relationships between the two.

Confounder and Regression Analysis

Here we see which confounders affect the relaitonship between happiness subscores and excess deaths. The findings are available in the table tab, as well as in the format of regression plots.

Subscores correlated to Excess Deaths

Life Ladder

## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Life Ladder` + offset(log(df_mortality$`Median age`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -161.03  -59.54   -1.56   48.87  202.65 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)   
## (Intercept)                   306.5       89.5    3.42   0.0011 **
## df_mortality$`Life Ladder`    -31.5       14.1   -2.24   0.0288 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 79.9 on 59 degrees of freedom
##   (82 observations deleted due to missingness)
## Multiple R-squared:  0.0782, Adjusted R-squared:  0.0626 
## F-statistic:    5 on 1 and 59 DF,  p-value: 0.0291
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Life Ladder` + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -160.83  -60.54   -1.82   48.94  203.13 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   314.4       89.7    3.51  0.00088 ***
## df_mortality$`Life Ladder`    -32.0       14.1   -2.27  0.02692 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 80.1 on 59 degrees of freedom
##   (82 observations deleted due to missingness)
## Multiple R-squared:  0.078,  Adjusted R-squared:  0.0624 
## F-statistic: 4.99 on 1 and 59 DF,  p-value: 0.0293

Log GDP per capita

## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Life Ladder` + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -160.83  -60.54   -1.82   48.94  203.13 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   314.4       89.7    3.51  0.00088 ***
## df_mortality$`Life Ladder`    -32.0       14.1   -2.27  0.02692 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 80.1 on 59 degrees of freedom
##   (82 observations deleted due to missingness)
## Multiple R-squared:  0.078,  Adjusted R-squared:  0.0624 
## F-statistic: 4.99 on 1 and 59 DF,  p-value: 0.0293
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Log GDP per capita` + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -164.83  -63.96   -9.18   56.09  186.49 
## 
## Coefficients:
##                                   Estimate Std. Error t value Pr(>|t|)   
## (Intercept)                          430.5      151.2    2.85   0.0061 **
## df_mortality$`Log GDP per capita`    -30.8       14.7   -2.10   0.0403 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 79.9 on 58 degrees of freedom
##   (83 observations deleted due to missingness)
## Multiple R-squared:  0.0689, Adjusted R-squared:  0.0529 
## F-statistic: 4.29 on 1 and 58 DF,  p-value: 0.0427

Social support

## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Social support` + offset(log(df_mortality$`Median age`)))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -134.5  -57.6  -15.7   52.0  181.2 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)                        533        186    2.87   0.0057 **
## df_mortality$`Social support`     -473        206   -2.30   0.0253 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 79.8 on 59 degrees of freedom
##   (82 observations deleted due to missingness)
## Multiple R-squared:  0.0817, Adjusted R-squared:  0.0662 
## F-statistic: 5.25 on 1 and 59 DF,  p-value: 0.0255
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Social support` + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -134.1  -58.2  -15.9   51.8  180.8 
## 
## Coefficients:
##                               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)                        542        186    2.91   0.0051 **
## df_mortality$`Social support`     -478        207   -2.31   0.0243 * 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 80 on 59 degrees of freedom
##   (82 observations deleted due to missingness)
## Multiple R-squared:  0.0815, Adjusted R-squared:  0.0659 
## F-statistic: 5.23 on 1 and 59 DF,  p-value: 0.0258

Healthy life expectancy at birth

## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Healthy life expectancy at birth`)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -186.00  -65.20   -4.92   52.90  200.51 
## 
## Coefficients:
##                                                 Estimate Std. Error t value
## (Intercept)                                       546.93     215.62    2.54
## df_mortality$`Healthy life expectancy at birth`    -6.20       3.08   -2.01
##                                                 Pr(>|t|)  
## (Intercept)                                        0.014 *
## df_mortality$`Healthy life expectancy at birth`    0.049 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 80.7 on 56 degrees of freedom
##   (85 observations deleted due to missingness)
## Multiple R-squared:  0.0673, Adjusted R-squared:  0.0507 
## F-statistic: 4.04 on 1 and 56 DF,  p-value: 0.0492
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Healthy life expectancy at birth` + offset(log(df_mortality$`Median age`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -185.94  -65.22   -4.91   52.86  200.73 
## 
## Coefficients:
##                                                 Estimate Std. Error t value
## (Intercept)                                       545.36     215.58    2.53
## df_mortality$`Healthy life expectancy at birth`    -6.23       3.08   -2.02
##                                                 Pr(>|t|)  
## (Intercept)                                        0.014 *
## df_mortality$`Healthy life expectancy at birth`    0.048 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 80.7 on 56 degrees of freedom
##   (85 observations deleted due to missingness)
## Multiple R-squared:  0.0674, Adjusted R-squared:  0.0507 
## F-statistic: 4.05 on 1 and 56 DF,  p-value: 0.0491
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Healthy life expectancy at birth` + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -185.69  -65.26   -4.66   52.59  201.30 
## 
## Coefficients:
##                                                 Estimate Std. Error t value
## (Intercept)                                       553.32     216.15    2.56
## df_mortality$`Healthy life expectancy at birth`    -6.27       3.09   -2.03
##                                                 Pr(>|t|)  
## (Intercept)                                        0.013 *
## df_mortality$`Healthy life expectancy at birth`    0.047 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 80.9 on 56 degrees of freedom
##   (85 observations deleted due to missingness)
## Multiple R-squared:  0.0671, Adjusted R-squared:  0.0504 
## F-statistic: 4.03 on 1 and 56 DF,  p-value: 0.0496

Freedom to make life choices

## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Freedom to make life choices`)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -159.49  -64.32   -2.93   48.52  208.67 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                      257        105    2.45
## df_mortality$`Freedom to make life choices`     -175        125   -1.40
##                                             Pr(>|t|)  
## (Intercept)                                    0.018 *
## df_mortality$`Freedom to make life choices`    0.168  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 82.6 on 58 degrees of freedom
##   (83 observations deleted due to missingness)
## Multiple R-squared:  0.0326, Adjusted R-squared:  0.0159 
## F-statistic: 1.95 on 1 and 58 DF,  p-value: 0.168
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Freedom to make life choices` + offset(log(df_mortality$`Median age`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -159.15  -64.41   -3.01   48.42  208.95 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                      253        105    2.41
## df_mortality$`Freedom to make life choices`     -175        125   -1.39
##                                             Pr(>|t|)  
## (Intercept)                                    0.019 *
## df_mortality$`Freedom to make life choices`    0.168  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 82.6 on 58 degrees of freedom
##   (83 observations deleted due to missingness)
## Multiple R-squared:  0.0326, Adjusted R-squared:  0.0159 
## F-statistic: 1.95 on 1 and 58 DF,  p-value: 0.168
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Freedom to make life choices` + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -159.34  -64.56   -3.08   48.18  209.43 
## 
## Coefficients:
##                                             Estimate Std. Error t value
## (Intercept)                                      263        105    2.50
## df_mortality$`Freedom to make life choices`     -180        125   -1.44
##                                             Pr(>|t|)  
## (Intercept)                                    0.015 *
## df_mortality$`Freedom to make life choices`    0.156  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 82.7 on 58 degrees of freedom
##   (83 observations deleted due to missingness)
## Multiple R-squared:  0.0325, Adjusted R-squared:  0.0158 
## F-statistic: 1.95 on 1 and 58 DF,  p-value: 0.168

Generosity

## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$Generosity + offset(log(df_mortality$`Median age`)))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -152.8  -55.4  -13.9   53.5  188.3 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                103.4       10.2   10.18  1.9e-14 ***
## df_mortality$Generosity   -218.5       69.0   -3.17   0.0025 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 76.1 on 57 degrees of freedom
##   (84 observations deleted due to missingness)
## Multiple R-squared:  0.15,   Adjusted R-squared:  0.135 
## F-statistic:   10 on 1 and 57 DF,  p-value: 0.00245
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$Generosity + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -153.3  -55.4  -13.8   53.5  188.8 
## 
## Coefficients:
##                         Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                108.5       10.2   10.66  3.4e-15 ***
## df_mortality$Generosity   -220.4       69.1   -3.19   0.0023 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 76.2 on 57 degrees of freedom
##   (84 observations deleted due to missingness)
## Multiple R-squared:  0.149,  Adjusted R-squared:  0.135 
## F-statistic:   10 on 1 and 57 DF,  p-value: 0.00249

Perceptions of corruption

## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Perceptions of corruption` + offset(log(df_mortality$`Median age`)))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -161.7  -45.2  -11.1   53.0  202.9 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                                  23.3       30.9    0.75   0.4537
## df_mortality$`Perceptions of corruption`    124.4       43.4    2.87   0.0057
##                                            
## (Intercept)                                
## df_mortality$`Perceptions of corruption` **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 78 on 59 degrees of freedom
##   (82 observations deleted due to missingness)
## Multiple R-squared:  0.122,  Adjusted R-squared:  0.107 
## F-statistic: 8.21 on 1 and 59 DF,  p-value: 0.00575
## 
## Call:
## lm(formula = df_mortality$`Excess deaths in 2020 per 100,000 population, relative to 2017-2019 average` ~ 
##     df_mortality$`Perceptions of corruption` + offset(log(df_mortality$`Index of institutional trust`)))
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -161.6  -45.1  -11.1   52.8  203.3 
## 
## Coefficients:
##                                          Estimate Std. Error t value Pr(>|t|)
## (Intercept)                                  27.0       30.9    0.87    0.385
## df_mortality$`Perceptions of corruption`    126.4       43.4    2.91    0.005
##                                            
## (Intercept)                                
## df_mortality$`Perceptions of corruption` **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 78.1 on 59 degrees of freedom
##   (82 observations deleted due to missingness)
## Multiple R-squared:  0.122,  Adjusted R-squared:  0.107 
## F-statistic:  8.2 on 1 and 59 DF,  p-value: 0.00578

Table

##                            coefficients  p.values
## (Intercept)                     314.408 0.0008766
## df_mortality$`Life Ladder`      -31.956 0.0269158
##                                   coefficients  p.values
## (Intercept)                            430.515 0.0060874
## df_mortality$`Log GDP per capita`      -30.778 0.0402941
##                               coefficients  p.values
## (Intercept)                         541.53 0.0050732
## df_mortality$`Social support`      -477.47 0.0243187
##                                                 coefficients p.values
## (Intercept)                                         553.3225 0.013194
## df_mortality$`Healthy life expectancy at birth`      -6.2691 0.047224
##                                             coefficients p.values
## (Intercept)                                       263.20 0.015382
## df_mortality$`Freedom to make life choices`      -180.17 0.156020
##                         coefficients   p.values
## (Intercept)                   108.45 3.4477e-15
## df_mortality$Generosity      -220.37 2.3233e-03
##                                          coefficients  p.values
## (Intercept)                                    27.016 0.3854952
## df_mortality$`Perceptions of corruption`      126.417 0.0050339

Results cont:

For my first question: Based on the combined scatter/line plots and factorized years, the most significant changes between years occur from increases in Healthy life expectancy and decreases in Freedom to make choices. These increases can be seen through left and right translations on the x-axis. It's likely these changes aren't as visible on the 'Score' y-axis because the changes (approximately ~.1 each) cancel out when they contribute to the overall score. These findings agree with and expand upon with the EDA histogram and boxplot findings. The addition of the scatter/line plot makes the trends more visible.

For my second question: All subscores against excess deaths have high dispersion, including with the two confounders. In fact, a linear relationship is likely not an accurate relationship for these variables. Also, the confounders have marginal effects on subscore significance. Most important, there are no subscores such that the confounders of median age and index of institutional trust cause a crossing of the p=.05 threshold. Therefore, we establish these confounders do not have a notable influence on the subscore to death relationship.

Scatterplot Comparisons

These plots show more visually salient overlays of how scores shift year over year. The regression lines indicate strata trends The changes for the plots particularly pronounced in healthy life expectancy and freedom to make life choices.

GDP per capita 2018 vs 2019

Social support 2018 vs 2019

Healthy life expectancy 2018 vs 2019

Freedom to make life choices vs 2019

Generosity 2018 vs 2019

Conclusion:

Of course, many complex factors contribute to national and individual happiness levels. They range from political and economic stability to social status and more. The Happiness Report provide provides a key benchmark for our understanding of happiness around the world.
Over 2018 to 2019, there was not much change in happiness levels or their subscores. Most change was on the order of magnitude of 10^-1 for subscores. As stated before, the key changes were increase in Healthy life expectancy and decreases in Freedom scores. These findings and any other changes in happiness level, beg the question of why. What social, local, or global effects cause happiness levels to change or stay the same?

Over 2019 to 2020, excess deaths are used in this report as a surrogate for several items. One is reflective of populations' obedience to federal safety guidelines around Covid-19. We don't unfortunately account for all epidemiological elements of disease spread in measuring confounders. Specifically, we focus on country population median age to measure the role of disease susceptability in populations and an index of institutional trust as one component of likelihood of obedience to safety guidelines. Overall, we found the confounders did not impact the relationship of happiness subscores on excess deaths. We found that generosity (p=.002) and perceptions of corruption were most significant (p=.005). Least significant was freedom to make life choices, while all others are significant. Therefore, we ascertain that happiness on the life ladder and happiness subscores have an effect on excess deaths in 2020. They, in fact, have a protective effect against excess deaths: a happier, wealthier, more supported, healthier, more generous, less corrupt society keeps more citizens alive year over year.